Optical codes encode useful, optically-readable information about the items to which they are attached or otherwise associated. Perhaps the best example of an optical code is the bar code. Bar codes are ubiquitously found on or associated with objects of various types, such as the packaging of retail, wholesale, and inventory goods; retail product presentation fixtures (e.g., shelves); goods undergoing manufacturing; personal or company assets; and documents. By encoding information, a bar code typically serves as an identifier of an object, whether the identification be to a class of objects (e.g., containers of milk) or a unique item (e.g., U.S. Pat. No. 7,201,322). Bar codes consist of alternating bars (i.e., relatively dark areas) and spaces (i.e., relatively light areas). The pattern of alternating bars and spaces and the widths of those bars and spaces represent a string of binary ones and zeros, wherein the width of any particular bar or space is an integer multiple of a specified minimum width, which is called a “module” or “unit.” Thus, to decode the information, a bar code reader must be able to reliably discern the pattern of bars and spaces, such as by determining the locations of edges demarking adjacent bars and spaces from one another, across the entire length of the bar code.
Bar codes are just one example of the many types of optical codes in use today. Bar codes are an example of a one-dimensional or linear optical code, as the information is encoded in one direction—the direction perpendicular to the bars and spaces. Higher-dimensional optical codes, such as, two-dimensional matrix codes (e.g., MaxiCode) or stacked codes (e.g., PDF 417), which are also sometimes referred to as “bar codes,” are also used for various purposes.
Two of the more important types of devices that read optical codes are (1) flying-spot scanning readers and (2) imager-based readers. The first of these types historically has been the laser-based bar code reader (also called a “scanner”), which generates a spot from a laser beam and sweeps or scans the spot across a bar code label. A laser-based bar code reader detects reflected and/or refracted laser light from the bars and spaces in a bar code as the laser spot moves across the bar code. An optical detector measures the intensity of the returned light as a function of time or position and generates an electrical signal having an amplitude determined by the intensity of the detected light. As the bar code is scanned, positive-going transitions and negative-going transitions in the electrical signal occur, signifying transitions between bars and spaces in the bar code. The electrical signal can be processed to determine the arrangement of bars and spaces of the scanned bar code. The bar and space information can be provided to a decoding unit to determine whether the bar code is recognized and, if so, to decode the information contained in the bar code.
To move the laser beam spot across a bar code or other optical code, various mechanisms have been utilized, including a rotating mirror with multiple facets, a dithering single-facet mirror, and a dithering light source. All of those mechanism rely on moving parts to scan the laser beam or other light source. One example of a laser-based scanner of the first type is the Magellan®-2200VS scanner made by Datalogic Scanning (formerly known as PSC), Eugene, Oreg. FIGS. 1 and 2 are simplified drawings representative of a laser-scanning mirror arrangement of this type of scanner 100. FIG. 1 is a view directly facing the scanner window 110, and FIG. 2 is a cut-away side view. A laser 115 generates a laser beam 120 that propagates toward a facet wheel or polygon mirror 125 having four outer surface side mirrors 130A, 130B, 130C, and 130D. The polygon mirror 125 is powered to rotate about its axis (facing generally into the page in FIG. 1) by a motor 128. Assuming for the sake of discussion that the polygon mirror 125 spins counterclockwise as viewed in FIG. 1, then as the side mirror 130A rotates completely past the incoming laser beam 120, the beam is reflected toward mirrors 135, 140, 145, 150, and 155 along the trajectory 160A shown. The reflected beam first traverses across the mirror 135, from left to right as shown, then mirror 140, then the other mirrors 145, 150, and 155 in that order. This process results in five scan lines 165A, 170A, 175A, 180A, and 185A, as shown in FIG. 3.
Each of the side mirrors 130 is tilted at a different angle with respect to the axis of rotation of the polygon mirror 125. Thus, as the next side mirror 130B spins into and across the laser beam 120, the reflected laser beam traverses the trajectory 160B—which is offset from the trajectory 160A due to the different tilt angle of the side mirrors 130A and 130B—across the mirrors 135-155, producing the scan lines 165B-185B shown in FIG. 3. This process repeats as side mirrors 130C and 130D spin across the laser beam 120, producing reflected beam trajectories 160C and 160D, respectively, and scan lines 165C-185C and then scan lines 165D-185D, respectively. Thus, in one complete revolution of the polygon mirror 125, the scanner 100 generates scan lines 165A-185A, 165B-185B, 165C-185C, and 165D-185D in that order. The set of those scan lines together constitutes a scan line pattern 190.
The scan line pattern 190 shown in FIG. 3 is a planar representation of moving laser beams in three dimensions. To be precise, a scan line is the intersection of a plane of light projected out through the scanner's window with a surface. The scan line pattern 190 depicted in FIG. 3 can be visualized as the pattern left by the scanning laser beams on the scanner window 110 or on a planar surface disposed at some distance above and typically parallel to the scanner window 110. As such, the scan line pattern 190 captures the spatial and angular separation among the individual scan lines but it does not capture any information about the direction from which the laser beam emanates from the scanner window 110 for the various scan lines. All three factors—spatial separation, angular separation or diversity within a plane, and directional diversity—can enhance the ability of the scanner 100 to read optical codes in different locations and orientations (i.e., pitch, roll, and yaw) within the scanner's viewing or scan volume, which is generally the space above the scanner window 110, including, typically, some space forward of and to the sides of the space directly above the scanner window 110. For example, a bar code lying generally in a plane parallel to the window 110 can be offset forward or backward, offset left or right, and/or oriented at variety of angles within the plane while being successfully scanned by at least one of the scan lines. Moreover, the same bar code may not be lying flat in a plane parallel to the window 110. For example, the bar code may be tilted forward or left or right somewhat and still be scanned successfully. The mirror 145 is useful for scanning forward-facing codes, for example, while the mirrors 135 and 155 are useful for scanning sideways-facing codes.
Other examples of laser-based scanners are disclosed in U.S. Pat. No. 7,198,195, assigned to the assignee of the present application.
While scanning laser-based bar code readers have become the standard for many applications, particularly fixed scanners such as those found at high-volume retail checkout registers, laser-based scanners do have some disadvantages. In particular, with reference to FIGS. 1-2, the laser 115 and motor 128 add to the complexity, cost, bulk, power consumption, and start-up time of the overall system, while decreasing reliability. In fact, the motor 128 used for sweeping the laser spot tends to be one of the least reliable components of a scanner, followed by the laser illumination source 115.
Imager-based readers operate according to a different principle, compared to laser-based scanners. An imager-based reader utilizes a camera or imager to generate electronic image data (typically in digital form) of an optical code. The image data is then processed to find and decode the optical code. For example, virtual scan line techniques are known techniques for digitally processing an image containing a bar code by looking across an image along a plurality of lines, typically spaced apart and at various angles, somewhat like a laser beam's scan pattern in a laser-based scanner.
Imager-based readers typically can only form images from one perspective—usually that of a normal vector out of the face of the imager. However, a few imager-based readers that generate multiple perspectives are known. One such reader is disclosed in the present assignee's U.S. Patent Application Publication No. 2006/0163355, published Jul. 27, 2006, in the names of inventors Olmstead et al., which discloses an embodiment having two cameras to collect two images from two different perspectives for the purpose of mitigating specular reflection. Similarly, U.S. Pat. No. 6,899,272, issued to Krichever et al. on May 31, 2005, discloses one embodiment that utilizes two independent sensor arrays pointed in different directions to collect two image data from two different perspectives. Another embodiment according to the '272 patent utilizes a single camera pointed at a moveable mirror that can switch between two positions to select one of two different imaging directions. Additionally, the present assignee's U.S. Pat. No. 5,814,803, issued to Olmstead et al. on Sep. 29, 1998, depicts in its FIG. 62 a kaleidoscope tunnel formed from two mirrored surfaces, resulting in eight different, rotated versions of the same object (bar code) on a single imager.